#if !defined(FAKE_D3D11_ASYNCHRONOUS_H)
#define FAKE_D3D11_ASYNCHRONOUS_H

#include <d3d11.h>
#include "Fakes/FakeD3D11DeviceChild.h"
#include <rt/Exceptions/NotImplementedException.h>

class FakeD3D11Asynchronous : public ID3D11Asynchronous
{
public:
	FakeD3D11Asynchronous()
		: DeviceChild()
	{ }

	CONTAIN_DEVICE_CHILD(DeviceChild)

	virtual UINT STDMETHODCALLTYPE GetDataSize() { throw rt::NotImplementedException(); }
};

#define CONTAIN_ASYNCHRONOUS(member_) \
	CONTAIN_DEVICE_CHILD(DeviceChild) \
	FakeD3D11Asynchronous member_; \
	virtual UINT STDMETHODCALLTYPE GetDataSize() { return member_.GetDataSize(); }

#endif
